#include "RegistroVariableNewsData.h"

RegistroVariableNewsData::RegistroVariableNewsData()
{
        this->fechaNoticia = 0;
        this->longitudTituloNoticia = 0;
        this->tituloYDescripcionNoticia = "";
}

RegistroVariableNewsData::~RegistroVariableNewsData()
{
}

TCTimeStamp RegistroVariableNewsData::getFechaNoticia()
{
        return this->fechaNoticia;
}

TCLongitud RegistroVariableNewsData::getLongitudTituloNoticia()
{
        return this->longitudTituloNoticia;
}

string RegistroVariableNewsData::getTituloYDescripcionNoticia()
{
        return this->tituloYDescripcionNoticia;
}

string RegistroVariableNewsData::getTitulo()
{
        if (this->longitudTituloNoticia == 0)
        {
                return "";
        }

        if (this->tituloYDescripcionNoticia.size() > this->longitudTituloNoticia)
        {
                return this->tituloYDescripcionNoticia.substr(0, this->longitudTituloNoticia);
        }

        return this->tituloYDescripcionNoticia;
}

string RegistroVariableNewsData::getDescripcion()
{
        if (this->tituloYDescripcionNoticia.size() > this->longitudTituloNoticia)
        {
                return this->tituloYDescripcionNoticia.substr(this->longitudTituloNoticia,
                        this->tituloYDescripcionNoticia.size() - this->longitudTituloNoticia);
        }

        return "";
}

void RegistroVariableNewsData::setFechaNoticia(TCTimeStamp value)
{
        this->fechaNoticia = value;
}

/*
void RegistroVariableNewsData::setLongitudTituloNoticia(TCLongitud value)
{
        this->longitudTituloNoticia = value;
}

void RegistroVariableNewsData::setTituloYDescripcionNoticia(string value)
{
        this->tituloYDescripcionNoticia = value;
}
*/

void RegistroVariableNewsData::setTitulo(string value)
{
        this->tituloYDescripcionNoticia = value + this->getDescripcion();
        this->longitudTituloNoticia = value.size();
}

void RegistroVariableNewsData::setDescripcion(string value)
{
        this->tituloYDescripcionNoticia = this->getTitulo() + value;
}

void RegistroVariableNewsData::fillBuffer()
{
        this->setTamanioBuffer(sizeof(this->fechaNoticia) + sizeof(this->longitudTituloNoticia) +
                this->tituloYDescripcionNoticia.size());
        this->crearBuffer();
        this->putIntoBuffer(&this->fechaNoticia, sizeof(this->fechaNoticia));
        this->putIntoBuffer(&this->longitudTituloNoticia, sizeof(this->longitudTituloNoticia));
        this->putIntoBuffer((void*)this->tituloYDescripcionNoticia.c_str(), this->tituloYDescripcionNoticia.size());
}

void RegistroVariableNewsData::readFromBuffer()
{
        this->getFromBuffer(&this->fechaNoticia, sizeof(this->fechaNoticia));
        this->getFromBuffer(&this->longitudTituloNoticia, sizeof(this->longitudTituloNoticia));

        char* sTituloNoticia;
        sTituloNoticia = (char*)malloc(this->bytesLeft() + 1);
        memset(sTituloNoticia, '\0', this->bytesLeft() + 1);

        this->getFromBuffer(sTituloNoticia, this->bytesLeft());
        this->tituloYDescripcionNoticia = string(sTituloNoticia);
        free(sTituloNoticia);
}


